EEUPDATE - Intel PCI NIC EEPROM Utility
Version 4.2
====================================================================

DISCLAIMER:
-----------
Copyright (c) 1998-2002, Intel Corporation. All rights reserved. Intel 
Corporation, 5200 NE Elam Young Parkway, Hillsboro, OR 97124-6497. 
Intel Corporation assumes no responsibility for errors or omissions in 
this document or software. Nor does Intel make any commitment to update 
the information or software contained herein. Software product is 
supplied "as is" and may not be fully functional.

Other product and corporate names may be trademarks of other companies 
and are used only for explanation and to the owners' benefit, without 
intent to infringe.

*** WARNING ***
This program must be run in a DOS only environment, not in a DOS window 
under a GUI or after the GUI has run.  Either boot to a DOS boot disk, 
or boot Windows 95/98 to command line mode.  

VERSION CHANGES
---------------

4.02   o Implemented Intel Boot Agent support for PRO/1000 MT and 
         PRO/1000 MF series network adapters.
       o Added support for device ID 1059.
       o Can now read MAC address correctly from dual port PRO/1000 MT 
         and PRO/1000 MF series network adapters.

4.01   o Comments can now be added in EEPROM image files.
       o Added check to see if EEupdate is being run under a supported 
         operating system.
       o Fixed formatting of adapter display table.
       o Fixed EEPROM writes for Gigabit adapters.
       o Fixed the boot agent configuration functions.
       o -all parameter now selects all adapters in the system.
       o -device parameter now selects all adapters with a specified
         device ID.

4.00   o Use of the -device parameter is now only required with the -all 
         parameter.

3.40   o Added Gigabit adapter support for Wake On Lan, and network boot
         configuration.

3.39   o Added support for device ID's 100C, and 100D.

3.38   o Improved documentation to clarify usage.

3.37   o Fixed multiple error message bug associated with MAC address raw 
         file parameter.
       o Updated documentation to reflect changes.

3.36   o Added support for additional device ID's.
       o Modified dump parameter to no longer read MAC address.

3.35   o Support for device ID 1004 must use -DEVICE parameter to program.

3.29   o Improved documentation.

3.28   o Cosmetic fixes -- updated TXT files with description of EEP format.

3.27   o Rewrote MAC address file code to fix several bugs and introduce new 
         "count" syntax.
       o Fixed bug where EEUPDATE was sometimes ignoring -nochksum flag
       o Updated -SETWAITTIME semantics and encoding

3.26   o Better error code reporting (mostly for BROW.EXE)

3.25   o "Invalid NIC" message and error exit code generating when appropriate, rather 
          than "No NIC specified!".  
       o Warning issued when EELOG.DAT read from directly while being written to.

3.24   o Added setup delay time set option (word 30h) as command line parameter
       o Eeupdate now displays error message when no NIC is specified

3.23   o Fixed some code update problems with 3.22

3.22   o Added capability to specify card by bus and device in addition to nic #

3.21   o Fixed issue with replicated MAC addresses when using input .dat file

3.18   o Fixed issue with device ID 2449

3.17   o Added Configuration Customization Option (Word 31h)

3.16   o Added support for device ID 2449.

3.14   o Added support for device ID 1209.

3.13   o Fixed support for device ID 1001.

3.12   o Changed PCI Scan code so that it scans 32 PCI busses.
      

3.11   o Support for device ID 1029 must use -DEVICE parameter to program.
       o Support for device ID 1001 must use -DEVICE parameter to program.
	   o Changing MAC address from command line.

3.10   o Support for device ID 1000 must use -DEVICE parameter to program.



RUNNING EEUPDATE
----------------

EEUPDATE.EXE is designed to be run from a DOS 6.22 boot disk with himem.sys
loaded.  To load himem.sys copy the himem.sys file to your DOS boot disk
and add the following line to the config.sys file on the boot disk:

device=a:\himem.sys

EEUPDATE64.efi must be run from the EFI shell on Intel Itanium based
computers.  EEUPDATE32.efi must be run from an EFI boot disk on Intel
IA32 based computers.

EEUPDATE can be run with any of the following command line options:

OPTIONS:
--------

   -HELP or -?
        Displays command line help.
   -EXITCODES
        Displays exit code help.
   -ALL
        Selects all adapters found in the system.
   -NIC=XX
        Selects a specific adapter (1-8).
   -BUS=X
        Selects PCI bus of adapter to program.  Must be used with the DEV
        parameter to specify an adapter.
   -DEV=X
        Selects PCI device to program.  Must be used with the BUS parameter
        to specify an adapter.
   -DEFAULTCONFIG or -DEFCFG
        Resets words 30h to 32h back to default.
   -BOOTENABLE
        Enables Boot ROM.
   -BOOTDISABLE
        Disables Boot ROM.
   -SETUPENABLE or -STE
        Enables Setup Menu
   -SETUPDISABLE OR -STD
        Disables Setup Menu.
   -TITLEENABLE OR -TLE
        Enables Initial Title Message.
   -TITLEDISABLE OR -TLD
        Disables Initial Title Message.
   -PROTOCOLENABLE OR -PROE
        Enables Changing the Boot Protocol Option.
   -PROTOCOLDISABLE OR -PROD
        Disables Changing the Boot Protocol Option.
   -ORDERENABLE OR -ORDE
        Enables Changing the Boot Order Option.
   -ORDERDISABLE OR -ORDD
        Disables Changing the Boot Order Option.
   -LWSENABLE OR -LWSE
        Enables Changing the Legacy OS Wakeup Support Option.
   -LWSDISABLE OR -LWSD
        Disables Changing the Legacy OS Wakeup Support Option.
   -DUMP
        Dumps EEPROM memory contents of the selected network adapter
        to a file.
   -NOCHKSUM
        Prevents EEPROM checksum from being updated.
   -WOLDISABLE or -WOLD
        Disables WOL bit.
   -WOLENABLE or -WOLE
        Enables WOL bit.
   -CB <offset> <bitmask>
        Clears bits in the EEPROM, specified in <bitmask>.
   -SB <offset> <bitmask>
        Sets bits in the EEPROM, specified in <bitmask>.
   -RW <word>
        Reads <word> from the EEPROM.
   -WW <word> <value>
        Writes <value> into <word> in EEPROM.
   <imagefile> <addrfile>
        Programs EEPROM with image from <imagefile> and MAC
        address from <addrfile>.
   -A <addrfile> or -ADDRESS <addrfile>
        Programs the EEPROM with only the MAC address from the 
        <addrfile> without changing the rest of the EEPROM.
   -D <imagefile> or -DATA <imagefile>
        Programs the EEPROM from the <imagefile> without
        changing the MAC address.
   -DEVICE=<pci device id>
        4 hex digit PCI device ID of network adapter to program.
   <imagefile> -MAC=macaddr
        Programs EEPROM with image from <imagefile> and MAC 
        address of macaddr.
   -MAC=macaddr
        Programs the EEPROM with only the MAC address of
        macaddr without changing the rest of the EEPROM.
   -SETWAITTIME=X or -SWT=X
        Set the setup delay time for the NIC to X seconds.
        Valid delay times are 0, 2, 3, and 5.


BASIC USAGE GUIDELINES
----------------------
To display a list of installed adapters call EEUPDATE.EXE without any 
parameters as follows:

EEUPDATE

EEUPDATE will display a list of network adapters installed in the
system similar to the following:

    [EEUPDATE ver 4.1.16.0] - Intel PCI NIC EEPROM Utility
    Copyright (C) 1995 - 2002 Intel Corporation

    NIC BUS Dev Vendor-Device  Network Address   PWA Number  Size Checksum
    === === === ============= ================= ============ ==== ========
     1   0   0D   8086-1229     44004713CEBE     729757-006   64    708E
     2   0   0F   8086-1229     4400B7DD035E     A43917-001   64    7575
     3   0   10   8086-1001     00D0B71100DD     738640-002   64    69DF

To perform an operation on an installed network adapter you must specify
the "-NIC=" parameter.  For example, to perform an EEPROM dump on NIC 3 
from the list above call EEUPDATE like this:

EEUPDATE -NIC=3 -DUMP

Alternatively you may specify the "-BUS=" and "-DEV=" parameters instead of the
"-NIC=" parameter to specify which network adapter to select.  For example
to program NIC 1 from the list above with the EEPROM image file "image.eep"
call EEUPDATE.EXE as follows:

EEUPDATE -BUS=0 -DEV=D -DATA image.eep


EEPROM IMAGE FILE FORMAT
------------------------
The <imagefile> parameter designates a text file which contains
hexadecimal values with which to program the EEPROM.  Each 
value should consist of up to four hex digits seperated by
a space or newline.  The data contained in <imagefile> must be
formatted the same as the EEPROM imagefile produced by the 
"-dump" parameter.  An imagefile produced by the "-dump"
parameter may be used to program the EEPROM.
Comments may be added to the EEPROM image file as long as they
are preceded by a semicolon ';'.
NOTE: When programming the EEPROM using the "-DATA" parameter,
EEupdate will ignore the MAC Address (first 6 bytes), and 
EEPROM checksum (last 2 bytes).  However, the MAC Address and 
checksum locations in the EEPROM image file must be filled
with valid hexadecimal values.


MAC ADDRESS FILE FORMAT
-----------------------
The <addrfile> parameter designates a text file which contains
MAC addresses to be programmed to the NIC.  This file should
contain a list of one or more legal MAC addresses, one per
line.  Each MAC address contains exactly 12 hexadecimal 
digits:

Example:

000AC45D7800
000AC45D7801
000AC45D7802

A special "count" syntax may also be used.  When a decimal
integer in square brackets follows the mac address on the line,
it is interpreted as a count of consecutive MAC addresses to be
programmed.  

Example:

000AC45D7800 [3]

The two examples above are the same.  Both represent three 
consecutive MAC addresses starting at 000AC45D7800.


EELOG.DAT
---------
When <addrfile> is used as a source for MAC addresses, EEUPDATE
generates a file named EELOG.DAT which contains a record of 
which MAC addresses in <addrfile> were used and which remain 
available.  Those addresses used are tagged with a date/time 
stamp like this:

000AC45D7800 : 10:43:14  08/30/2000

The file format for EELOG.DAT is readable as input for <addrfile>
in future invocations of EEUPDATE.  As of EEUPDATE 3.27, the 
EELOG.DAT file may be used as both input and output 
simultaneously.


EXAMPLES:
--------
Example 1:
To update the EEPROM, and MAC Address with the data stored in the 
files imagefile.eep, and addrfile.dat respectively, call EEUPDATE
like this:
   EEUPDATE -NIC=1 imagefile.eep addrfile.dat

Example 2:
To update the MAC Address without changing the rest of the
EEPROM on the third Intel network adapter found in your system,
call EEUPDATE like this:
   STEP1: EEUPDATE -NIC=3 -A addrfile.dat
   STEP2: copy eelog.dat addrfile.dat

Example 3:
To update the EEPROM without changing the MAC address on all
of the Intel network adapters with device ID 2449 found in
your system, call EEUPDATE like this:
   EEUPDATE -DEVICE=2449 -D imagefile.eep

Example 4:
To dump the EEPROM contents on all of the Intel network adapters
in your system, call EEUPDATE like this:
   EEUPDATE -ALL -DUMP

Example 5:
To clear specific bit 1 in word 0xA in the EEPROM on 
all of the Intel network adapters in your system with 
device IDs 1038, call EEUPDATE like this:
   EEUPDATE -DEVICE=1038 -CB 0xA 0x2

Example 6:
To set bit 1 in word 0xA in the EEPROM on all of the Intel 
network adapters in your system, call EEUPDATE like this:
   EEUPDATE -ALL -SB 0xA 0x2

Example 7:
To read word 0x9 from the EEPROM, call EEUPDATE like this:
   EEUPDATE -NIC=3 -RW 0x9

Example 8:
To write word 0x9 to the EEPROM on the third Intel 
network adapter found in your system, and update its
checksum, call EEUPDATE like this:
   EEUPDATE -NIC=3 -WW 0x9 0x1234


NOTE
-----

* If you run EEUPDATE without any command line options,
  EEUPDATE will display a listing of all of the supported
  Intel Network adapters found in your system.

* When using the '-dump' command, EEUPDATE will automatically 
  create a file and name it, based on the last 8 bytes
  of your Intel Network adapter's MAC Address.  For example,
  if your MAC Address was '00AA11223344', EEUPDATE would
  create the file called '11223344.EEP'.

* Both <word> and <bitmask> parameters *must* be sent
  to eeupdate in hexadecimal.

* The EEPROM Checksum is automatically updated when you
  clear/set a bit or bits, and when you write a word to
  the EEPROM.  This can be shut off by using the -NOCHKSUM
  option.  -NOCHKSUM should be used sparingly, because it
  may cause the device to appear invalid to other utilities.

DOS ERROR CODES:
----------------
EEUPDATE returns error codes to the DOS command line. 
A description of the error codes is shown below.

CODE NAME:               VALUE:
----------               ------
SUCCESS                    0
OPERATOR TERMINATION       1
INVALID NIC                2
BAD COMMAND LINE PARAM     3
EEPROM CHECKSUM FAILURE    4
EEPROM READ FAILURE        5
EEPROM WRITE FAILURE       6
EEPROM DUMP FAILURE        7
BAD FILE                   8
NO MEMORY                  9
NO NICS FOUND             10
